package com.ruoyi.college.mapper;

import java.util.List;
import com.ruoyi.college.domain.ResearchDirection;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 学科研究方向Mapper接口
 * 
 * @author ruoyi
 * @date 2025-07-31
 */
@Mapper
public interface ResearchDirectionMapper 
{
    /**
     * 查询学科研究方向
     * 
     * @param id 学科研究方向主键
     * @return 学科研究方向
     */
    public ResearchDirection selectResearchDirectionById(String id);

    /**
     * 查询学科研究方向列表
     * 
     * @param researchDirection 学科研究方向
     * @return 学科研究方向集合
     */
    public List<ResearchDirection> selectResearchDirectionList(ResearchDirection researchDirection);

    /**
     * 新增学科研究方向
     * 
     * @param researchDirection 学科研究方向
     * @return 结果
     */
    public int insertResearchDirection(ResearchDirection researchDirection);

    /**
     * 修改学科研究方向
     * 
     * @param researchDirection 学科研究方向
     * @return 结果
     */
    public int updateResearchDirection(ResearchDirection researchDirection);

    /**
     * 删除学科研究方向
     * 
     * @param id 学科研究方向主键
     * @return 结果
     */
    public int deleteResearchDirectionById(String id);

    /**
     * 批量删除学科研究方向
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteResearchDirectionByIds(String[] ids);

    /**
     * 根据一级、二级学科ID和研究方向编码查询研究方向记录
     * @param researchDirection 封装查询条件（secondSubjectId + researchDirectionCode）
     * @return 匹配的研究方向列表
     */
    List<ResearchDirection> selectBySecondSubjectIdAndCode(ResearchDirection researchDirection);

    /**
     * 根据学院ID和二级学科ID查询研究方向名称
     * @param collegeId 学院ID（对应表中college_id字段）
     * @param secondSubjectId 二级学科ID（对应表中second_subject_id字段）
     * @return 研究方向名称（name字段）；无匹配数据时返回null
     */
    String selectResearchNameByCollegeIdAndSecondSubjectId(
            @Param("collegeId") String collegeId,  // 与XML中#{collegeId}绑定
            @Param("secondSubjectId") String secondSubjectId,  // 与XML中#{secondSubjectId}绑定
            @Param("researchDirectionCode") String researchDirectionCode
    );
}
